package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.domain.bo.PatrolAreaUserBo;
import com.ruoyi.system.domain.vo.PatrolAreaUserVo;

import java.util.Collection;
import java.util.List;

/**
 * 巡区用户分配Service接口
 *
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IPatrolAreaUserService {

    /**
     * 查询巡区用户分配
     */
    PatrolAreaUserVo queryById(Long id);

    /**
     * 查询巡区用户分配列表
     */
    TableDataInfo<PatrolAreaUserVo> queryPageList(PatrolAreaUserBo bo, PageQuery pageQuery);

    /**
     * 查询巡区用户分配列表
     */
    List<PatrolAreaUserVo> queryList(PatrolAreaUserBo bo);

    /**
     * 根据巡区ID查询用户分配列表
     */
    List<PatrolAreaUserVo> queryByAreaId(Long areaId);

    /**
     * 根据用户ID查询巡区分配列表
     */
    List<PatrolAreaUserVo> queryByUserId(Long userId);

    /**
     * 新增巡区用户分配
     */
    Boolean insertByBo(PatrolAreaUserBo bo);

    /**
     * 修改巡区用户分配
     */
    Boolean updateByBo(PatrolAreaUserBo bo);

    /**
     * 校验并批量删除巡区用户分配信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 批量分配用户到巡区
     */
    Boolean batchAssignUsers(Long areaId, List<Long> userIds, List<String> userNames, Integer assignType);

    /**
     * 取消用户巡区分配
     */
    Boolean cancelUserAssign(Long areaId, Long userId);
}
